English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
C ++ map استخدام []استخدام مفتاح معينمفتاح قيمةزيارة عناصر map.
إنه يشبهat()الوظيفة. الفرق بينها هو أنه إذا لم يكن المفتاح المطلوب موجودًا في map، يتم إطلاق استثناء؛ من ناحية أخرى، إذا لم يكن المفتاح موجودًا في map، فإنهoperator[]إدراج المفتاح في map.
اعتباراً من مفتاح القيمةk،النحو هو:
mapped_type& operator[](const key_type& k); // قبل C++ 11 mapped_type& operator[](const key_type& k); // بدءاً من C++ 11 mapped_type& operator[](key_type&& k); // بدءاً من C++ 11
k:مفتاح القيمة لتحديد عنصر قيمة map.
يستخدم هذا مفتاح القيمة لاسترداد استدعاء قيمة عنصر map.
دعونا نرى مثالاً بسيطاً لاستدعاء العنصر.
#include <iostream> #include <map> using namespace std; int main() { map<char, int> m = { {'a', 1}, {'b', 2}, {'c', 3}, {'d', 4}, {'e', 5}, }; cout << "Map يحتوي على العناصر التالية" << endl; cout << "m['a'] = " << m['a'] << endl; cout << "m['b'] = " << m['b'] << endl; cout << "m['c'] = " << m['c'] << endl; cout << "m['d'] = " << m['d'] << endl; cout << "m['e'] = " << m['e'] << endl; return 0; }
الناتج:
يحتوي Map على العناصر التالية m['a'] = 1 m['b'] = 2 m['c'] = 3 m['d'] = 4 m['e'] = 5
في هذا، يتم استخدام دالة operator [] لاستدعاء عناصر map.
دعونا نرى مثالاً بسيطاً باستخدام مفتاح القيمة لإضافة العناصر.
#include <iostream> #include <string> #include <map> using namespace std; int main () { map<int,string> mymap = { { 101, "" }, { 102, "" }, { 103, "" } }; mymap[101] = "w3codebox"; mymap[102] = "."; mymap[103] = "com"; //طبع القيمة المتعلقة بمفتاح 101، أي w3codebox cout<<mymap[101]; //طبع القيمة المتعلقة بمفتاح 102، أي . cout<<mymap[102]; //طبع القيمة المتعلقة بمفتاح 103، أي com cout<<mymap[103]; return 0; }
الناتج:
oldtoolbag.com
في المثال السابق، تم استخدام operator [] لضيف عنصرًا جديدًا باستخدام المفتاح المرتبط بقيمة في الوقت المناسب.
دعونا نرى مثال بسيط لتحديث القيمة المرتبطة بالمفتاح.
#include <iostream> #include <string> #include <map> using namespace std; int main () { map<int,string> mymap = { { 100, "Nikita"}, { 200, "Deep" }}; { 300, "Priya" }, { 400, "Suman" }, { 500, "Aman" }}; cout<<"العناصر هي:" <<endl; for (auto& x: mymap) { cout << x.first << ": "<< x.second << '\n'; } mymap[100] = "Nidhi"; // يتم تغيير القيمة المرتبطة بالمفتاح 100 إلى Nidhi mymap[300] = "Pinku"; // يتم تغيير القيمة المرتبطة بالمفتاح 300 إلى Pinku mymap[500] = "Arohi"; // يتم تغيير القيمة المرتبطة بالمفتاح 500 إلى Arohi cout<<"\nالعناصر المعدلة هي:" <<endl; for (auto& x: mymap) { cout << x.first << ": "<< x.second << '\n'; } return 0; }
الناتج:
العناصر هي: 100: Nikita 200: Deep 300: Priya 400: Suman 500: Aman العناصر المعدلة هي: 100: Nidhi 200: Deep 300: Pinku 400: Suman 500: Arohi
في المثال السابق، تم استخدام وظيفة operator [] لتغيير القيمة المرتبطة بمفتاحها.
دعونا نرى مثال بسيط لنفهم الفرق بين operator [] و at()。
#include <iostream> #include <string> #include <map> using namespace std; int main () { map<char,string> mp = { { 'a',"Java"}, { 'b', "C++" }, { 'c', "Python" }}; cout<<endl<<mp['a']; cout<<endl<<mp['b']; cout<<endl<<mp['c']; mp['d'] = "SQL"; cout<<endl<<mp['d']; try { mp.at('z'); //ليس هناك مفتاح لهذا القيمة z في map، سيتم إلقاء استثناء catch(const out_of_range &e) { cout << endl << "\nاستثناء النطاق المحدد " << e.what(); } return 0; }
الناتج:
Java C++ Python SQL استثناء النطاق المحدد map::at
في المثال السابق، عندما نستخدم دالة at()، فإنها ترمي استثناء out_of_range، لأن هناك لا قيمة لـ z في خريطة، بينما عند استخدام operator [] لضبط العنصر في المفتاح d، لأن لا يوجد مفتاح في الخريطة له قيمة 'd'، فإنه سيضيف عنصرًا جديدًا في الخريطة بمفتاح 'd' وقيمة 'SQL'.